
package htmlreader;

import htmlreader.exceptions.ExceptionErroConexao;
import java.io.IOException;
import java.util.Scanner;
import java.net.*;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author leopoldes
 */
public class TesteServer {

    private static byte[] ip;
    private static int porta;
    private static Servidor server;
    private static int comandoRecebido;

    public static void main(String argv[]) throws UnknownHostException, IOException, ClassNotFoundException{

        /*Menu De Inicialização*/
        mostraMenuInicial();

        /*Iniciar Servidor*/
        iniciarServidor();

        /*Abrir Conexão*/
        abrirConexao();
        
        //do{
            System.out.println("1- Waiting...");
            
            /*Ler dados enviados*/
            server.leDadosDaConexao();

            System.out.println("2- Waiting...");

            /*Tratar Comando Recebido*/
            trataComandoRecebido();

            System.out.println("3- Waiting...");
            
        //}while(comandoRecebido != 9);
        

        System.out.println("\n\n\n::Servidor encerrado");
        

    }

    
    public static void protocoloDeComandos() throws IOException{
        switch (comandoRecebido){
            case 0:
                //
                System.out.println("\n\n\nFechando conexão do servidor.");
                //server.fechaConexao();
                break;
            case 1:
                //server.enviaDados((Object) server.getListaDeArquivosHtml())
                System.out.println("Um");
                break;

            case 2:
                //
                System.out.println("Dois");
                break;

            case 3:
                //
                System.out.println("Três");
                break;

            case 4:
                //
                System.out.println("Quatro");
                break;

            case 5:
                //
                System.out.println("Cinco");
                break;

            default:
                //Opção inválida
                System.out.println("Defou");
                break;


        }

    }

    
    public static void trataComandoRecebido() throws IOException, ClassNotFoundException{
        //Trata o comando recebido do cliente
        comandoRecebido = Servidor.getComandoRecebido();

        System.out.println("Comando recebido pelo server: " + comandoRecebido);

        //Protocolo com comandos
        protocoloDeComandos();

    }
  
    /**
     * Mostra menu de inicialização, identifica a porta e o ip do servidor
     * @throws java.net.UnknownHostException
     */
    public static void mostraMenuInicial() throws UnknownHostException{
        Scanner scanner = new Scanner(System.in);
        InetAddress localHost = InetAddress.getLocalHost();
        ip = localHost.getAddress();

        /*MENU DE INIVIALIZAÇÃO*/

        System.out.println("\t\t\t" + localHost.getHostName());
        System.out.println("\t\t" + localHost.getAddress().toString());

        System.out.println("============================");
        System.out.println("          SERVER");
        System.out.println("============================");
        System.out.println("\n\n");

        System.out.println(":: Informe a porta (padrão: 6789): ");
        //Usuário informa porta de conexão
        String p = scanner.nextLine();

        if (!p.isEmpty()){
            porta = Integer.parseInt(p);
        }else{
            porta = 6789;
        }
        //
    }

    /**
     *
     * @param ip
     */
    public static void iniciarServidor(){
        //try{
              server = new Servidor(TesteServer.ip, TesteServer.porta);
        //}catch(){
         //TODO lançar exceção para quando não conseguir inicializar o servidor
        //}
        System.out.println("\n::Servidor inicializado\n\n\n");
        selecionarDiretorio(); //teste

    }

    public static void selecionarDiretorio(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("\n::Informe o caminho do diretório a ser compartilhado: ");
        String p = scanner.nextLine();
        server.setDiretorio(p);
        server.carregaDiretorios(server.getDiretorio());
    }

    public static void abrirConexao(){
        /*Abrir conexão*/
        try {
            System.out.println("\n::Conexão aberta");
            server.abrirConexao();            
            //comandoRecebido =  server.getInput();
        } catch (IOException ex) {
            Logger.getLogger(TesteServer.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ExceptionErroConexao ex) {
            Logger.getLogger(TesteServer.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}
